
package com.xx.entity;

import java.io.Serializable;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 
 * @TableName cqcet.menu
 * @description 菜单管理 管理后台菜单
 */
@Data
@TableName("cqcet.menu")
@ApiModel
public class Menu implements Serializable {
    
	/**
	 * 编号
	 */
	@TableId(type = IdType.ASSIGN_ID)
	@ApiModelProperty("编号")
	@JsonSerialize(using = ToStringSerializer.class)
	private String id;
			
    /**
     * 层级
	 * 
     */
    @ApiModelProperty("层级")
    private Integer level;
				
    /**
     * 名称
	 * 
     */
    @ApiModelProperty("名称")
    private String name;
				
    /**
     * 权重
	 * 
     */
    @ApiModelProperty("权重")
    private Integer sort;
				
    /**
     * 图片
	 * 
     */
    @ApiModelProperty("图片")
    private String img;
				
    /**
     * 链接地址
	 * 
     */
    @ApiModelProperty("链接地址")
    private String url;
				
    /**
     * 上级菜单
	 * 
     */
    @ApiModelProperty("上级菜单")
    private Integer parentId;
				
    /**
     * 是否启用
	 * 
     */
    @ApiModelProperty("是否启用")
    private Integer status;
				
    /**
     * 能否编辑
	 * 
     */
    @ApiModelProperty("能否编辑")
    private String editAble;
				
	/**
	 * 创建时间
	 */
	@TableField(fill = FieldFill.INSERT)
	@ApiModelProperty("创建时间")
	@JsonSerialize(using = ToStringSerializer.class)
	private Long createTime;
				  
	/**
	 * 创建时间
	 */
	@TableField(fill = FieldFill.INSERT)
	@ApiModelProperty("创建时间")
	private String createTimeString;
					
	/**
	 * 更新时间
	 */
	@TableField(fill = FieldFill.UPDATE)
	@ApiModelProperty("更新时间")
	@JsonSerialize(using = ToStringSerializer.class)
	private Long updateTime;
					
	/**
	 * 更新时间
	 */
	@TableField(fill = FieldFill.UPDATE)
	@ApiModelProperty("更新时间")
	private String updateTimeString;
					
	/**
	 * 逻辑删除控制
	 */
	@ApiModelProperty("逻辑删除控制")
	@TableLogic
	private Integer state;
			  
	/**
	 * 单位
	 */
	@TableField(fill = FieldFill.INSERT)
	@ApiModelProperty("单位")
	private String unitId;
					
	
	/**
	 * 设置编号
	 */
	public void setId(String id){
		this.id = id;
	}

	/**
	 * 获取编号
	 */
	public String getId(){
		return this.id;
	}
		
	/**
	 * 设置层级
	 */
	public void setLevel(Integer level){
		this.level = level;
	}

	/**
	 * 获取层级
	 */
	public Integer getLevel(){
		return this.level;
	}
		
	/**
	 * 设置名称
	 */
	public void setName(String name){
		this.name = name;
	}

	/**
	 * 获取名称
	 */
	public String getName(){
		return this.name;
	}
		
	/**
	 * 设置权重
	 */
	public void setSort(Integer sort){
		this.sort = sort;
	}

	/**
	 * 获取权重
	 */
	public Integer getSort(){
		return this.sort;
	}
		
	/**
	 * 设置图片
	 */
	public void setImg(String img){
		this.img = img;
	}

	/**
	 * 获取图片
	 */
	public String getImg(){
		return this.img;
	}
		
	/**
	 * 设置链接地址
	 */
	public void setUrl(String url){
		this.url = url;
	}

	/**
	 * 获取链接地址
	 */
	public String getUrl(){
		return this.url;
	}
		
	/**
	 * 设置上级菜单
	 */
	public void setParentId(Integer parentId){
		this.parentId = parentId;
	}

	/**
	 * 获取上级菜单
	 */
	public Integer getParentId(){
		return this.parentId;
	}
		
	/**
	 * 设置是否启用
	 */
	public void setStatus(Integer status){
		this.status = status;
	}

	/**
	 * 获取是否启用
	 */
	public Integer getStatus(){
		return this.status;
	}
		
	/**
	 * 设置能否编辑
	 */
	public void setEditAble(String editAble){
		this.editAble = editAble;
	}

	/**
	 * 获取能否编辑
	 */
	public String getEditAble(){
		return this.editAble;
	}
		
	/**
	 * 设置创建时间
	 */
	public void setCreateTime(Long createTime){
		this.createTime = createTime;
	}

	/**
	 * 获取创建时间
	 */
	public Long getCreateTime(){
		return this.createTime;
	}
		
	/**
	 * 设置创建时间
	 */
	public void setCreateTimeString(String createTimeString){
		this.createTimeString = createTimeString;
	}

	/**
	 * 获取创建时间
	 */
	public String getCreateTimeString(){
		return this.createTimeString;
	}
		
	/**
	 * 设置更新时间
	 */
	public void setUpdateTime(Long updateTime){
		this.updateTime = updateTime;
	}

	/**
	 * 获取更新时间
	 */
	public Long getUpdateTime(){
		return this.updateTime;
	}
		
	/**
	 * 设置更新时间
	 */
	public void setUpdateTimeString(String updateTimeString){
		this.updateTimeString = updateTimeString;
	}

	/**
	 * 获取更新时间
	 */
	public String getUpdateTimeString(){
		return this.updateTimeString;
	}
		
	/**
	 * 设置逻辑删除控制
	 */
	public void setState(Integer state){
		this.state = state;
	}

	/**
	 * 获取逻辑删除控制
	 */
	public Integer getState(){
		return this.state;
	}
		
	/**
	 * 设置单位
	 */
	public void setUnitId(String unitId){
		this.unitId = unitId;
	}

	/**
	 * 获取单位
	 */
	public String getUnitId(){
		return this.unitId;
	}
		
	public String stringify(){
		String rc = "{\"id\":\"" + this.getId() + "\",\"level\":\"" + this.getLevel() + "\",\"name\":\"" + this.getName() + "\",\"sort\":\"" + this.getSort() + "\",\"img\":\"" + this.getImg() + "\",\"url\":\"" + this.getUrl() + "\",\"parentId\":\"" + this.getParentId() + "\",\"status\":\"" + this.getStatus() + "\",\"editAble\":\"" + this.getEditAble() + "\",\"createTime\":\"" + this.getCreateTime() + "\",\"createTimeString\":\"" + this.getCreateTimeString() + "\",\"updateTime\":\"" + this.getUpdateTime() + "\",\"updateTimeString\":\"" + this.getUpdateTimeString() + "\",\"state\":\"" + this.getState() + "\",\"unitId\":\"" + this.getUnitId() + "\"}";
		rc = rc.replaceAll("\"null\"","null").replaceAll("\"([0-9]+)\"","$1");
        return rc;
	}

	public static Menu JSONparse(String jsonString) throws JsonProcessingException {
        if(jsonString == null) return null;
		try {
            ObjectMapper objectMapper = new ObjectMapper();
            return objectMapper.readValue(jsonString,Menu.class);
        }catch (JsonProcessingException e){
            return null;
        }
    }
}
    